package com.xian.d1_polymorphic;

/**
 * 什么是多态?
 * ●同类型的对象，执行同一个行为，会表现出不同的行为特征。
 * <p>
 * 多态的常见形式
 * 父类类型 对象名称 = new  子类构造器;
 * 接口    对象名称 = new 实现类构造器;
 * <p>
 * 多态中成员访问特点
 * 方法调用:编译看左边，运行看右边。
 * 变量调用:编译看左边，运行也看左边。(多态侧重行为多态)
 *
 * 多态的前提
 * 有继承/实现关系;有父类引用指向子类对象;有方法重写。
 *
 * 优势
 * 在多态形式下，右边对象可以实现解耦合，便于扩展和维护。
 * 定义方法的时候，使用父类型作为参数，该方法就可以接收这父类的一切子类对象，体现出多态的扩展性与便利。
 */
public class Test {
    public static void main(String[] args) {
        //日标:先认识多态的形式
        //父类  对象名称 = new  子类构造器();
        Animal a = new Dog();
        a.run(); //狗跑的贼快！！！

        System.out.println(a.name); //动物名称

        Animal b = new Tortoise();
        b.run();  //乌龟跑的非常非常慢！！！
        System.out.println(b.name); //动物名称
    }
}
